/*$.fn.serializeObject = function() {
	var o = {};
	var a = this.serializeArray();
	$.each(a, function() {
		if (o[this.name] !== undefined) {
			if (!o[this.name].push) {
				o[this.name] = [ o[this.name] ];
			}
			o[this.name].push(this.value || '');
		} else {
			o[this.name] = this.value || '';
		}
	});
	return o;
};

var _common = {
	request : function(param) {
		var _this = this;
		$.ajax({
			url : param.url || '',
			type : param.method || 'get',
			dataType : param.type || 'json',
			contentType : "application/json; charset=utf-8",
			data : param.data || '',
			success : function(res) {
				// 状态 status + 数据 data

				// 请求数据正确，调用param.success方法
				if (res.status === "1") {
					typeof param.success === 'function'
							&& param.success(res.data, res.message);
				}
				// 未登录
				else if (res.status === "3") {
					alert('未登录');
				}
				// 请求数据错误, 调用param.error方法
				else if (res.status === "2") {
					typeof param.error === 'function'
							&& param.error(res.message);
				}
			},
			error : function(err) {
				// 404 503
				typeof param.error === 'function'
						&& param.error(err.statusText);
			}
		});
	}
}
*/
// 新增角色
var request_role_new = function(data, resolve, reject) {
	_common.request({
		url : '/a/wxconf/articleType',
		method : 'post',
		data : data,
		success : resolve,
		error : reject
	})
};
// 删除角色
var request_role_del = function(data, resolve, reject) {
	_common.request({
		url : '/a/wxconf/articleType',
		method : 'delete',
		data : data,
		success : resolve,
		error : reject
	})
};
// 获取角色
var request_role_get = function(id, resolve, reject) {
	_common.request({
		url : '/a/wxconf/articleType',
		method : 'get',
		data : "id=" + id,
		success : resolve,
		error : reject
	})
};

var roleManage = function() {

	var _init = function() {

		var table = $('#table_role');

		table
				.dataTable({
					"processing" : true,
					// 开启文章器模式
					serverSide : true,
					"ajax" : {
						url : "/a/wxconf/articleTypes", // 列表查询
					// data: json
					},
					"autoWidth" : false,
					"columns" : [
							{
								"width" : "25%",
								"data" : "name"
							},
							{
								"width" : "10%",
								"data" : "orderNo"
							},
							{
								"width" : "35%",
								"data" : "createDate"
							},
							{
								"width" : "30%",
								"data" : "null",
								"defaultContent" : "<button type=\"button\" class=\"btn btn_edit_role\">编辑</button><button type=\"button\" class=\"btn btn_del_role\">删除</button>"
							} ],
					"language" : {
						url:'/assets/pages/Chinese.json'
					},
					"pageLength" : 5,
					"order" : [ [ 1, "asc" ] ],
					"columnDefs" : [ {
						"orderable" : false,
						"targets" : [ 0,3 ]
					}, {
						"targets" : 2,
						"render" : function(data, type, row, meta) {
							return moment(data).format('YYYY-MM-DD HH:mm');
						}
					} ],
					"dom" : "<'row'<'.col-md-6 col-sm-12'><'col-md-6 col-sm-12'>r>"
							+ "<t>" + "<'table_b relative'<'col-md-5'i><'col-md-7'>p>",
					"fnInitComplete" : function() {
					},
					"fnDrawCallback": function() {
						if(!document.getElementById("changePage")) {
							$(".table_b").append("<input style='height:28px;line-height:28px;width:40px;display:inline-block;' class='margin text-center form-control' id='changePage' type='text'>  <a class='btn   shiny' style='margin-bottom:5px' href='javascript:void(0);' id='dataTable-btn'>跳至</a>");
						}
						var oTable = $("#table_role").dataTable();
						$('#dataTable-btn').click(function(e) {
							if($("#changePage").val() && $("#changePage").val() > 0) {
								var redirectpage = $("#changePage").val() - 1;
							} else {
								var redirectpage = 0;
							}
							oTable.fnPageChange(redirectpage);
						});
					}
				});

		// 选择列表
		// table.find('.group-checkable').change(function() {
		// var set = $(this).attr("data-set");
		// var checked = $(this).is(":checked");
		// $(set).each(function() {
		// if (checked) {
		// $(this).prop("checked", true);
		// $(this).parents('tr').addClass("active");
		// } else {
		// $(this).prop("checked", false);
		// $(this).parents('tr').removeClass("active");
		// }
		// });
		// });
		// table.on('change', 'tbody tr .checkboxes', function() {
		// $(this).parents('tr').toggleClass("active");
		// });

		// 关闭弹框
		$(".modal").on('hidden.bs.modal', function(e) {
			$('.modal .help-block').html(''); // 清空提示
			$('.modal input').val(''); // 清空 input
		});
		// 添加
		$('#btn_new_role').click(function(event) {
			$('#modal_new_role').modal('show');
		});

		// 修改
		table.on('click', '.btn_edit_role', function(event) {
			var oData_arr = table.DataTable().rows($(this).parents("tr"))
					.data(); // 操作行对象

			var _id = oData_arr[0].id;
			var _name = oData_arr[0].name;
			var _orderNo = oData_arr[0].orderNo;


			$('#modal_edit_role').find('input[type=hidden]').val(_id);
			$('#modal_edit_role [name="name"]').val(_name);
			$('#modal_edit_role [name="orderNo"]').val(_orderNo);

		/*	request_role_get(_id, function(res) {
				// 正确
				console.log(res);
			}, function(err) {
				// 错误
				// alert(err);
			})*/

			$('#modal_edit_role').modal('show');
		});

		// 删除
		table.on('click', '.btn_del_role', function(event) {
			var oData_arr = table.DataTable().rows($(this).parents("tr"))
					.data(); // 操作行对象
			var _id = oData_arr[0].id;
			bootbox.dialog({
				message : "确定要删除",
				title : "提示",
				buttons : {
					cancel: {
						label: "取消",
						className: "btn default"
					},
					success : {
						label : "确定",
						className : "btn green",
						callback : function() {
							// alert('提交删除');
							var _data = JSON.stringify({
								id : _id
							});
							$.ajax({
								url : '/a/wxconf/articleType',
								type : 'delete',
								dataType : 'json',
								contentType : "application/json; charset=utf-8",
								data : _data
								}).done(function(data) {
									if (data.status === '1') {
										// 正确
										table.DataTable().ajax.reload();
									} else if (data.status === '2') {
										alert(data.message);}
								}).fail(function() {
							   console.log("error");
						});
						
						}
					}
				}
			});
		});
	}

	return {
		init : function() {
			_init();
		}

	};

}();

var roleForm = function() {

	// 新建表单验证
	var validate_role_new = function() {

		var form_new = $('#form_role_new');
		var error_new = $('.alert-danger', form_new);
		var success_new = $('.alert-success', form_new);
		var server_error_new = $('.alert-warning', form_new);

		form_new.validate({
			errorElement : 'span',
			errorClass : 'help-block help-block-error',
			focusInvalid : false,
			ignore : "", // 不验证隐藏input
			/*rules : {
				name : {
					required : true
				},
				orderNo : {
					required : true
				},
				relaIds : {
					required : true
				}
			},
			messages : {
				name : {
					required : " 请输入文章分类名称"
				},
				orderNo : {
					required : "请填写排序"
				},
				relaIds : {
					required : "请选择文章分类"
				}
			},
*/
		/*	errorPlacement : function(error, element) {
				if (element.parent(".input-group").size() > 0) {
					error.insertAfter(element.parent(".input-group"));
				} else if (element.attr("data-error-container")) {
					error.appendTo(element.attr("data-error-container"));
				} else if (element.parents('.radio-list').size() > 0) {
					error.appendTo(element.parents('.radio-list').attr(
							"data-error-container"));
				} else if (element.parents('.radio-inline').size() > 0) {
					error.appendTo(element.parents('.radio-inline').attr(
							"data-error-container"));
				} else if (element.parents('.checkbox-list').size() > 0) {
					error.appendTo(element.parents('.checkbox-list').attr(
							"data-error-container"));
				} else if (element.parents('.checkbox-inline').size() > 0) {
					error.appendTo(element.parents('.checkbox-inline').attr(
							"data-error-container"));
				} else {
					error.insertAfter(element);
				}
			},
*/
		/*	invalidHandler : function(event, validator) {
				success_new.hide();
				server_error_new.hide();
				error_new.show();
			},

			highlight : function(element) {
				$(element).closest('.form-group').addClass('has-error');
			},

			unhighlight : function(element) {
				$(element).closest('.form-group').removeClass('has-error');
			},

			success : function(label) {
				label.closest('.form-group').removeClass('has-error');
			},*/

			submitHandler : function(form) {
			/*	success_new.show();
				error_new.hide();
				server_error_new.hide();*/
			/*	$(form).find('button[type=submit]')
						.attr('disabled', 'disabled');*/

				var _data = $(form).serializeObject();
				if (!mdTool.validate(_data.name.trim(), 'require')) {
					$(".product_type").html("文章分类名称不能为空");
					$(".product_type").css("color","red");
					$(form).find('button[type=submit]').removeAttr(
					'disabled');
					return;
				}
				if (!mdTool.validate(_data.orderNo, 'num')) {
					$(".product_type").html("请输入正确的排序");
					$(".product_type").css("color","red");
					$(form).find('button[type=submit]').removeAttr(
					'disabled');
					return;
				}

				var url = "/a/wxconf/article/check";
				$.ajax({
					type : "PUT",
					dataType : "json",
					// async:false,
					url : url,
					contentType : "application/json; charset=utf-8",
					data : JSON.stringify(_data),
					success : function(data) {
						if (data.status == 1) {
							
							$.ajax({
								url : '/a/wxconf/articleType',
								type : 'POST',
								dataType : 'json',
								contentType : "application/json; charset=utf-8",
								data : JSON.stringify($(form).serializeObject())
								}).done(function(data) {
									if (data.status === '1') {
										// 正确
										$("#table_role").DataTable().ajax.reload(); // 刷新table
										$('#modal_new_role').modal('hide');
										success_new.hide();
										$(form).find('button[type=submit]').removeAttr('disabled');
									} else if (data.status === '2') {
										// 错误
										success_new.hide();
										server_error_new.show();
										server_error_new.html(data.info);
										$(form).find('button[type=submit]').removeAttr('disabled'); // 返回错误信息
									}
								}).fail(function() {
							console.log("error");
						});
						
						} else {
							$(".product_type").html("该文章分类存在,请不要重复添加！");
							$(".product_type").css("color","red");
							success_new.hide();
							$(form).find('button[type=submit]').removeAttr(
									'disabled');
							return false;
						}
					},
					error : function(data) {
						$(".product_type").html("该文章分类存在,请不要重复添加！");
						$(".product_type").css("color","red");
						return false;
					}
				});
				return false;
			}
		});
	}

	// 编辑表单验证
	var validate_role_edit = function() {

		var form_edit = $('#form_role_edit');
		var error_edit = $('.alert-danger', form_edit);
		var success_edit = $('.alert-success', form_edit);
		var server_error_edit = $('.alert-warning', form_edit);

		form_edit
				.validate({
					errorElement : 'span',
					errorClass : 'help-block help-block-error',
					focusInvalid : false,
					ignore : "", // 不验证隐藏input
				/*	rules : {
						name : {
							required : true
						},
						orderNo : {
							required : true
						},
						relaIds : {
							required : true
						}
					},
					messages : {
						name : {
							required : " 请输入文章分类名称"
						},
						orderNo : {
							required : "请填写排序"
						},
						relaIds : {
							required : "请选择文章分类"
						}
					},*/

				/*	errorPlacement : function(error, element) {
						if (element.parent(".input-group").size() > 0) {
							error.insertAfter(element.parent(".input-group"));
						} else if (element.attr("data-error-container")) {
							error
									.appendTo(element
											.attr("data-error-container"));
						} else if (element.parents('.radio-list').size() > 0) {
							error.appendTo(element.parents('.radio-list').attr(
									"data-error-container"));
						} else if (element.parents('.radio-inline').size() > 0) {
							error.appendTo(element.parents('.radio-inline')
									.attr("data-error-container"));
						} else if (element.parents('.checkbox-list').size() > 0) {
							error.appendTo(element.parents('.checkbox-list')
									.attr("data-error-container"));
						} else if (element.parents('.checkbox-inline').size() > 0) {
							error.appendTo(element.parents('.checkbox-inline')
									.attr("data-error-container"));
						} else {
							error.insertAfter(element);
						}
					},

					invalidHandler : function(event, validator) {
						success_edit.hide();
						server_error_edit.hide();
						error_edit.show();
					},

					highlight : function(element) {
						$(element).closest('.form-group').addClass('has-error');
					},

					unhighlight : function(element) {
						$(element).closest('.form-group').removeClass(
								'has-error');
					},

					success : function(label) {
						label.closest('.form-group').removeClass('has-error');
					},
*/
					submitHandler : function(form) {
						//success_edit.show();
					/*	error_edit.hide();
						server_error_edit.hide();*/
						/*$(form).find('button[type=submit]').attr('disabled',
								'disabled');*/

						// 先判断是否重复
						var _data = $(form).serializeObject();
						if (!mdTool.validate(_data.name.trim(), 'require')) {
							$(".product_type").html("文章分类名称不能为空");
							$(".product_type").css("color","red");
							$(form).find('button[type=submit]').removeAttr(
							'disabled');
							return;
						}
						if (!mdTool.validate(_data.orderNo, 'num')) {
							$(".product_type").html("请输入正确的排序");
							$(".product_type").css("color","red");
							$(form).find('button[type=submit]').removeAttr(
							'disabled');
							return;
						}
						var url = "/a/wxconf/article/check";
						var isEditFalg = true;
						$.ajax({
									type : "PUT",
									dataType : "json",
									// async:false,
									url : url,
									contentType : "application/json; charset=utf-8",
									data : JSON.stringify(_data),
									success : function(data) {
										if (data.status == 1) {
											$.ajax({
													url : '/a/wxconf/articleType',
													type : 'PUT',
													dataType : 'json',
													contentType : "application/json; charset=utf-8",
													data : JSON.stringify($(form).serializeObject())
												}).done(function(data) {
																if (data.status === '1') {
																	// 正确
																	$("#table_role").DataTable().ajax.reload(); // 刷新table
																	$('#modal_edit_role').modal('hide');
																	success_edit.hide();
																	$(form).find('button[type=submit]').removeAttr('disabled');
																} else if (data.status === '2') {
																	// 错误
																	success_edit.hide();
																	server_error_edit.show();
																	server_error_edit.html(data.info);
																	$(form).find('button[type=submit]').removeAttr('disabled'); // 返回错误信息
																}
															}).fail(function() {
														console.log("error");
													});

										} else {
											alert("该文章分类存在,请不要重复添加！");
											success_edit.hide();
											$(form).find('button[type=submit]')
													.removeAttr('disabled'); // 返回错误信息
											isEditFalg = false;
											return false;
										}
									},
									error : function(data) {
										alert("该文章分类存在,请不要重复添加！");
										success_edit.hide();
										$(form).find('button[type=submit]')
												.removeAttr('disabled'); // 返回错误信息
										isEditFalg = false;
										return false;
									}
								});
						return false;
					}
				});
	}

	return {
		init : function() {
			validate_role_new();
			validate_role_edit();
		}

	};
}();

$(function() {
	roleManage.init();
	roleForm.init();
});